/**
* 通用js方法封装处理
*/

// const baseURL = process.env.VUE_APP_BASE_API
export function timeFix () {
  const time = new Date()
  const hour = time.getHours()
  return hour < 9 ? '早上好' : hour <= 11 ? '上午好' : hour <= 13 ? '中午好' : hour < 20 ? '下午好' : '晚上好'
}
export function isExternal(path) {
  return /^(https?:|mailto:|tel:)/.test(path)
}
// 日期格式化
export function parseTime(time, pattern) {
 if (arguments.length === 0 || !time) {
   return null
 }
 const format = pattern || '{y}-{m}-{d} {h}:{i}:{s}'
 let date
 if (typeof time === 'object') {
   date = time
 } else {
   if ((typeof time === 'string') && (/^[0-9]+$/.test(time))) {
     time = parseInt(time)
   } else if (typeof time === 'string') {
     time = time.replace(new RegExp(/-/gm), '/');
   }
   if ((typeof time === 'number') && (time.toString().length === 10)) {
     time = time * 1000
   }
   date = new Date(time)
 }
 const formatObj = {
   y: date.getFullYear(),
   m: date.getMonth() + 1,
   d: date.getDate(),
   h: date.getHours(),
   i: date.getMinutes(),
   s: date.getSeconds(),
   a: date.getDay()
 }
 const time_str = format.replace(/{(y|m|d|h|i|s|a)+}/g, (result, key) => {
   let value = formatObj[key]
   // Note: getDay() returns 0 on Sunday
   if (key === 'a') { return ['日', '一', '二', '三', '四', '五', '六'][value] }
   if (result.length > 0 && value < 10) {
     value = '0' + value
   }
   return value || 0
 })
 return time_str
}

// 表单重置
export function resetForm(refName) {
	if (this.$refs[refName]) {
		this.$refs[refName].resetFields();
	}
}
/**
 * 构造树型结构数据
 * @param {*} data 数据源
 * @param {*} id id字段 默认 'id'
 * @param {*} parentId 父节点字段 默认 'parentId'
 * @param {*} children 孩子节点字段 默认 'children'
 */
 export function handleTree(data, id, parentId, children) {
  // console.log(data)
	let config = {
		id: id || 'id',
		parentId: parentId || 'parentId',
		childrenList: children || 'children'
	};

	var childrenListMap = {};
	var nodeIds = {};
	var tree = [];

	for (let d of data) {
		let parentId = d[config.parentId];
		if (childrenListMap[parentId] == null) {
			childrenListMap[parentId] = [];
		}
		nodeIds[d[config.id]] = d;
		childrenListMap[parentId].push(d);
	}

	for (let d of data) {
		let parentId = d[config.parentId];
		if (nodeIds[parentId] == null) {
			tree.push(d);
		}
	}

	for (let t of tree) {
		adaptToChildrenList(t);
	}

	function adaptToChildrenList(o) {
		if (childrenListMap[o[config.id]] !== null) {
			o[config.childrenList] = childrenListMap[o[config.id]];
		}
		if (o[config.childrenList]) {
			for (let c of o[config.childrenList]) {
				adaptToChildrenList(c);
			}
		}
	}
	return tree;
}
